home *** CD-ROM | disk | FTP | other *** search
- <?xml version="1.0" encoding="UTF-8" ?>
- <!DOCTYPE manualpage SYSTEM "../style/manualpage.dtd">
- <?xml-stylesheet type="text/xsl" href="../style/manual.en.xsl"?>
- <!-- $Revision: 1.2.2.6 $ -->
-
- <!--
- Copyright 2002-2004 The Apache Software Foundation
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- -->
-
- <manualpage metafile="win_compiling.xml.meta">
- <parentdocument href="./">Platform Specific Notes</parentdocument>
-
- <title>Compiling Apache for Microsoft Windows</title>
-
- <summary>
-
- <p>There are many important points before you begin compiling
- Apache. See <a href="windows.html">Using Apache with Microsoft
- Windows</a> before you begin.</p>
-
- </summary>
-
- <section id="requirements">
-
- <title>Requirements</title>
-
- <p>Compiling Apache requires the following environment to be
- properly installed:</p>
-
- <ul>
- <li>
- <p>Disk Space</p>
- <p>Make sure you have at least 50 MB of free disk space
- available. After installation Apache requires approximately
- 10 MB of disk space, plus space for log and cache files,
- which can grow rapidly. The actual disk space requirements
- will vary considerably based on your chosen configuration and
- any third-party modules or libraries.</p>
- </li>
-
- <li>
- <p>Microsoft Visual C++ 5.0 or higher.</p>
- <p>Apache can be built using the command line tools, or from
- within the Visual Studio IDE Workbench. The command line
- build requires the environment to reflect the <code>PATH</code>,
- <code>INCLUDE</code>, <code>LIB</code> and other variables
- that can be configured with the <code>vcvars32</code> batch file:</p>
-
- <example>
- "c:\Program Files\DevStudio\VC\Bin\vcvars32.bat"
- </example>
- </li>
-
- <li>
- <p>The Windows Platform SDK.</p>
- <p>Visual C++ 5.0 builds require an updated Microsoft Windows
- Platform SDK to enable some Apache features. For command line
- builds, the Platform SDK environment is prepared by the
- <code>setenv</code> batch file:</p>
-
- <example>
- "c:\Program Files\Platform SDK\setenv.bat"
- </example>
-
- <p>The Platform SDK files distributed with Visual C++ 6.0 and
- later are sufficient, so users of later version may skip
- this requirement.</p>
-
- <note>Note that the Windows Platform SDK update is required
- to enable all supported <module>mod_isapi</module> features.
- Without a recent update, Apache will issue warnings under
- MSVC++ 5.0 that some <module>mod_isapi</module> features
- will be disabled. Look for the update at <a
- href="http://msdn.microsoft.com/downloads/sdks/platform/platform.asp"
- >http://msdn.microsoft.com/downloads/sdks/platform/platform.asp</a>.</note>
- </li>
-
- <li>
- <p>The awk utility (awk, gawk or similar).</p>
- <p>To install Apache within the build system, several files are
- modified using the <code>awk.exe</code> utility. awk was chosen since it
- is a very small download (compared with Perl or WSH/VB) and
- accomplishes the task of generating files. Brian Kernighan's
- <a href="http://cm.bell-labs.com/cm/cs/who/bwk/"
- >http://cm.bell-labs.com/cm/cs/who/bwk/</a>
- site has a compiled native Win32 binary,
- <a href="http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe"
- >http://cm.bell-labs.com/cm/cs/who/bwk/awk95.exe</a> which
- you must save with the name <code>awk.exe</code> rather than
- <code>awk95.exe</code>.</p>
-
- <note>Note that Developer Studio IDE will only find
- <code>awk.exe</code> from the Tools menu Options... Directories
- tab (the Projects - VC++ Directories pane in Developer Studio 7.0)
- listing Executable file paths. Add the path for <code>awk.exe</code>
- to this list, and your system <code>PATH</code> environment variable,
- as needed.</note>
-
- <note>Also note that if you are using Cygwin (<a href="http://www.cygwin.com/"
- >http://www.cygwin.com/</a>) the awk utility is named <code>gawk.exe</code> and
- that the file <code>awk.exe</code> is really a symlink to the <code>gawk.exe</code>
- file. The Windows command shell does not recognize symlinks, and because of that
- building InstallBin will fail. A workaround is to delete <code>awk.exe</code> from
- the cygwin installation and rename <code>gawk.exe</code> to <code>awk.exe</code>.</note>
- </li>
-
- <li>
- <p>[Optional] OpenSSL libraries (for <module>mod_ssl</module>
- and <code>ab.exe</code> with ssl support)</p>
- <p><strong>Caution: there are significant restrictions and
- prohibitions on the use and distribution of strong cryptography
- and patented intellectual property throughout the world.</strong>
- OpenSSL includes strong cryptography controlled by both export
- regulations and domestic law, as well as intellectual property
- protected by patent, in the United States and elsewhere. Neither
- the Apache Software Foundation nor the OpenSSL project can provide
- legal advise regarding possession, use, or distribution of the code
- provided by the OpenSSL project. <strong>Consult your own legal
- counsel, you are responsible for your own actions.</strong></p>
-
- <p>OpenSSL must be installed into a <code>srclib</code> subdirectory named
- <code>openssl</code>, obtained from <a href="http://www.openssl.org/source/"
- >http://www.openssl.org/source/</a>, in order to compile <module>mod_ssl</module>
- or the abs project (<code>ab.exe</code> with SSL support.) To prepare OpenSSL
- for both <code>release</code> and <code>debug</code> builds of Apache, and
- disable the patent protected features in 0.9.7, you might use the following
- build commands:</p>
-
- <example>
- perl Configure VC-WIN32<br />
- perl util\mkfiles.pl >MINFO<br />
- perl util\mk1mf.pl dll no-asm no-mdc2 no-rc5 no-idea VC-WIN32 >makefile<br />
- perl util\mk1mf.pl dll debug no-asm no-mdc2 no-rc5 no-idea VC-WIN32 >makefile.dbg<br />
- perl util\mkdef.pl 32 libeay no-asm no-mdc2 no-rc5 no-idea >ms\libeay32.def<br />
- perl util\mkdef.pl 32 ssleay no-asm no-mdc2 no-rc5 no-idea >ms\ssleay32.def<br />
- nmake<br />
- nmake -f makefile.dbg
- </example>
-
- </li>
-
- <li>
- <p>[Optional] zlib sources (for <module>mod_deflate</module>)</p>
- <p>Zlib must be installed into a <code>srclib</code> subdirectory named
- <code>zlib</code>, however those sources need not be compiled. The build system
- will compile the compression sources directly into the <module>mod_deflate</module>
- module. Zlib can be obtained from <a href="http://www.gzip.org/zlib/"
- >http://www.gzip.org/zlib/</a> -- <module>mod_deflate</module> is
- confirmed to build correctly with version 1.1.4.</p>
- </li>
-
- </ul>
-
- </section>
-
- <section id="commandbuild">
-
- <title>Command-Line Build</title>
-
- <p>First, unpack the Apache distribution into an appropriate
- directory. Open a command-line prompt and <code>cd</code> to that
- directory.</p>
-
- <p>The master Apache makefile instructions are contained in the
- <code>Makefile.win</code> file. To compile Apache on Windows
- NT, simply use one of the following commands to compiled the
- <code>release</code> or <code>debug</code> build, respectively:</p>
-
- <example><pre>
- nmake /f Makefile.win _apacher
-
- nmake /f Makefile.win _apached
- </pre></example>
-
- <p>Either command will compile Apache. The latter will include
- debugging information in the resulting files, making it easier
- to find bugs and track down problems.</p>
-
- </section>
-
- <section id="workspacebuild">
-
- <title>Developer Studio Workspace IDE Build</title>
-
- <p>Apache can also be compiled using VC++'s Visual Studio
- development environment. To simplify this process, a
- Visual Studio workspace, <code>Apache.dsw</code>, is provided.
- This workspace exposes the entire list of working <code>.dsp</code>
- projects that are required for the complete Apache binary release.
- It includes dependencies between the projects to assure that they
- are built in the appropriate order.</p>
-
- <p>Open the <code>Apache.dsw</code> workspace, and select
- <code>InstallBin</code> (<code>Release</code> or <code>Debug</code> build,
- as desired) as the Active Project. <code>InstallBin</code> causes all
- related project to be built, and then invokes <code>Makefile.win</code> to
- move the compiled executables and dlls. You may personalize the
- <code>INSTDIR=</code> choice by changing <code>InstallBin</code>'s Settings,
- General tab, Build command line entry. <code>INSTDIR</code> defaults to the
- <code>/Apache2</code> directory. If you only want a test compile (without
- installing) you may build the <code>BuildBin</code> project instead.</p>
-
- <p>The <code>.dsp</code> project files are distributed in Visual
- C++ 6.0 format. Visual C++ 5.0 (97) will recognize them. Visual C++
- 7.0 (.net) must convert <code>Apache.dsw</code> plus the <code>.dsp</code>
- files into an <code>Apache.sln</code> plus <code>.msproj</code> files,
- be sure you reconvert the <code>.msproj</code> file if any of the source
- <code>.dsp</code> files change! This is really trivial, just open
- <code>Apache.dsw</code> in the VC++ 7.0 IDE once again.</p>
-
- <p>Visual C++ 7.0 (.net) users should also use the Build
- menu, Configuration Manager dialog to uncheck both the <code>Debug</code>
- and <code>Release</code> Solution modules abs, <module>mod_ssl</module>
- and <module>mod_deflate</module>.
- These modules are built by invoking <code>nmake</code> or the IDE directly
- with the <code>BinBuild</code> target to build those modules explicitly,
- only if the <code>srclib</code> directories <code>openssl</code>
- and/or <code>zlib</code> exist.</p>
-
- <p>Exported <code>.mak</code> files pose a greater hassle, but they are
- required for Visual C++ 5.0 users to build <module>mod_ssl</module>,
- abs (ab with SSL support) and/or <module>mod_deflate</module>.
- VC++ 7.0 (.net) users also benefit, <code>nmake</code> builds
- are faster than <code>binenv</code> builds.
- Build the entire project from within the VC++ 5.0 or 6.0 IDE,
- then use the Project Menu Export for all makefiles.
- You must build the projects first in order to create all dynamic
- auto-generated targets, so that dependencies can be parsed
- correctly. Run the following command to fix the paths so they
- will build anywhere:</p>
-
- <example>
- perl srclib\apr\build\fixwin32mak.pl
- </example>
-
- <p>You must type this command from the <em>top level</em>
- directory of the <code>httpd</code> source tree. Every
- <code>.mak</code> and <code>.dep</code> project file within
- the current directory and below will be corrected, and the
- timestamps adjusted to reflect the <code>.dsp</code>.</p>
-
- <p>If you contribute back a patch that revises project files, we
- must commit project files in Visual Studio 6.0 format. Changes
- should be simple, with minimal compilation and linkage flags that
- will be recognized by all VC++ 5.0 through 7.0 environments.</p>
-
- </section>
-
- <section id="projectcomponents">
-
- <title>Project Components</title>
-
- <p>The <code>Apache.dsw</code> workspace and <code>makefile.win</code>
- <code>nmake</code> script both build the <code>.dsp</code> projects
- of the Apache server in the following sequence:</p>
-
- <ol>
- <li><code>srclib\apr\apr.dsp</code></li>
-
- <li><code>srclib\apr\libapr.dsp</code></li>
-
- <li><code>srclib\apr-util\uri\gen_uri_delims.dsp</code></li>
-
- <li><code>srclib\apr-util\xml\expat\lib\xml.dsp</code></li>
-
- <li><code>srclib\apr-util\aprutil.dsp</code></li>
-
- <li><code>srclib\apr-util\libaprutil.dsp</code></li>
-
- <li><code>srclib\pcre\dftables.dsp</code></li>
-
- <li><code>srclib\pcre\pcre.dsp</code></li>
-
- <li><code>srclib\pcre\pcreposix.dsp</code></li>
-
- <li><code>server\gen_test_char.dsp</code></li>
-
- <li><code>libhttpd.dsp</code></li>
-
- <li><code>Apache.dsp</code></li>
- </ol>
-
- <p>In addition, the <code>modules\</code> subdirectory tree contains
- project files for the majority of the modules.</p>
-
- <p>The <code>support\</code> directory contains project files for
- additional programs that are not part of the Apache runtime,
- but are used by the administrator to test Apache and maintain
- password and log files. Windows-specific support projects are
- broken out in the <code>support\win32\</code> directory.</p>
-
- <ol>
- <li><code>support\ab.dsp</code></li>
-
- <li><code>support\htdigest.dsp</code></li>
-
- <li><code>support\htpasswd.dsp</code></li>
-
- <li><code>support\logresolve.dsp</code></li>
-
- <li><code>support\rotatelogs.dsp</code></li>
-
- <li><code>support\win32\ApacheMonitor.dsp</code></li>
-
- <li><code>support\win32\wintty.dsp</code></li>
- </ol>
-
- <p>Once Apache has been compiled, it needs to be installed in
- its server root directory. The default is the
- <code>\Apache2</code> directory, of the same drive.</p>
-
- <p>To build and install all the files into the desired folder
- <em>dir</em> automatically, use one of the following
- <code>nmake</code> commands:</p>
-
- <example><pre>
- nmake /f Makefile.win installr INSTDIR=<em>dir</em>
-
- nmake /f Makefile.win installd INSTDIR=<em>dir</em>
- </pre></example>
-
- <p>The <em>dir</em> argument to <code>INSTDIR</code> gives
- the installation directory; it can be omitted if Apache is
- to be installed into <code>\Apache2</code>.</p>
-
- <p>This will install the following:</p>
-
- <ul>
- <li><code><em>dir</em>\bin\Apache.exe</code> - Apache
- executable</li>
-
- <li><code><em>dir</em>\bin\ApacheMonitor.exe</code> - Service
- monitor taskbar icon utility</li>
-
- <li><code><em>dir</em>\bin\htdigest.exe</code> - Digest auth
- password file utility</li>
-
- <li><code><em>dir</em>\bin\htdbm.exe</code> - SDBM auth
- database password file utility</li>
-
- <li><code><em>dir</em>\bin\htpasswd.exe</code> - Basic auth
- password file utility</li>
-
- <li><code><em>dir</em>\bin\logresolve.exe</code> - Log file
- dns name lookup utility</li>
-
- <li><code><em>dir</em>\bin\rotatelogs.exe</code> - Log file
- cycling utility</li>
-
- <li><code><em>dir</em>\bin\wintty.exe</code> - Console window
- utility</li>
-
- <li><code><em>dir</em>\bin\libapr.dll</code> - Apache
- Portable Runtime shared library</li>
-
- <li><code><em>dir</em>\bin\libaprutil.dll</code> - Apache
- Utility Runtime shared library</li>
-
- <li><code><em>dir</em>\bin\libhttpd.dll</code> - Apache Core
- library</li>
-
- <li><code><em>dir</em>\modules\mod_*.so</code> - Loadable
- Apache modules</li>
-
- <li><code><em>dir</em>\conf</code> - Configuration
- directory</li>
-
- <li><code><em>dir</em>\logs</code> - Empty logging
- directory</li>
-
- <li><code><em>dir</em>\include</code> - C language header
- files</li>
-
- <li><code><em>dir</em>\lib</code> - Link library files</li>
- </ul>
-
- <section id="projectcomponents-warn">
-
- <title>Warning about building Apache from the development tree</title>
-
- <note>Note only the <code>.dsp</code> files are maintained between <code>release</code>
- builds. The <code>.mak</code> files are NOT regenerated, due to the tremendous
- waste of reviewer's time. Therefore, you cannot rely on the <code>NMAKE</code>
- commands above to build revised <code>.dsp</code> project files unless you
- then export all <code>.mak</code> files yourself from the project. This is
- unnecessary if you build from within the Microsoft
- Developer Studio environment.</note>
-
- <note>Also note it is very worthwhile to build the <code>BuildBin</code>
- target project (or the command line <code>_apacher</code> or
- <code>_apached</code> target) prior to exporting the make files.
- Many files are autogenerated in the build process. Only a full
- build provides all of the dependent files required to build proper
- dependency trees for correct build behavior.</note>
-
- <p>In order to create distribution <code>.mak</code> files, always review
- the generated <code>.mak</code> (or <code>.dep</code>) dependencies for
- Platform SDK or other garbage includes. The <code>DevStudio\SharedIDE\bin\</code>
- (VC5) or <code>DevStudio\Common\MSDev98\bin\</code> (VC6) directory contains
- the <code>sysincl.dat</code> file, which must list all exceptions. Update this
- file (including both forward and backslashed paths, such as both
- <code>sys/time.h</code> and <code>sys\time.h</code>) to include such dependencies.
- Including local-install paths in a distributed <code>.mak</code> file will
- cause the build to fail completely. And don't forget to run
- <code>srclib/apr/build/fixwin32mak.pl</code> in order to fix absolute
- paths within the <code>.mak</code> files.</p>
-
- </section>
-
- </section>
-
- </manualpage>
-
-